1. Technical Field
The present invention relates to data stream processing, and more particularly to systems and methods for reducing switching delay or lag by reducing redundant or unneeded data in the streams.
2. Description of the Related Art
A stream is an encoding that includes a sequence of frames of different types. For example, in an MPEG encoded video stream, I, P, and B-frames can be distinguished. A stream creator (encoder) sends a complete stream that includes all the frame types to a sub-sampler. The sub-sampler blocks certain frame types or passes them on to a receiver.
The creator understands the streams and defines stream configurations that include certain frame types only. Because a configuration includes a sub-set of frame types, it can also be seen as a sub-sampled version of the complete stream. It is a function of the sub-sampler to block or pass incoming frames according to the stream configuration that is currently in use.
To allow for more adaptivity, a creator may encode not just a single stream, but multiple streams using the same source. These alternate encodings will be for different bit rates, allowing a sub-sampler more choices to match the receiver bandwidth, as it can choose between alternate encodings, each with a choice of sub-sampling configuration.
While the strategy of this simple example works reasonably well in practice, it has at least one serious disadvantage. For example, any switch to a new stream will be reflected in the transmitted bandwidth only after all packets (which may come from one or more different streams, based on previous decisions) in the buffer, before the current packet has been drained.
This leads to a switching lag between when the decision to reduce/increase the bit-rate is made and when it is actually reflected at the outgoing stream, during which time the buffer and network state can change significantly. This switching lag constrains any decision strategy to be overly conservative, thereby leading to poor system performance.